home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1994 August / August CD.bin / Shareware / Education / numericalmethods Folder / chap_3 / uptrbk.m < prev   
Encoding:
Text File  |  1994-06-05  |  678 b   |  26 lines  |  [MATF/MATL]

  1. function  X = uptrbk(A,B)
  2. % X = uptrbk(A,B)
  3. % A is an nxn non-singular matrix, input.
  4. % B is a  nx1 vector, input.
  5. % X is an nx1 vector, output.
  6. % Partial pivoting is used.
  7. [n n] = size(A);
  8. A = [A';B']';
  9. X = zeros(n,1);
  10. row = 1:n;       % Initialize the pointer vector.
  11. for p = 1:n-1,
  12.   [Max J] = max(abs(A(p:n,p)));  % Find the pivot row.
  13.   T = row(p);
  14.   row(p) = row(J+p-1);
  15.   row(J+p-1) = T;  
  16.   if  A(row(p),p) == 0, break, end
  17.   for k = p+1:n,
  18.     M = A(row(k),p)/A(row(p),p);
  19.     A(row(k),p+1:n+1) = A(row(k),p+1:n+1) - M*A(row(p),p+1:n+1);
  20.   end
  21. end
  22. X(n) = A(row(n),n+1)/A(row(n),n);
  23. for k = n-1:-1:1,
  24.   X(k) = (A(row(k),n+1) - A(row(k),k+1:n)*X(k+1:n))/A(row(k),k);
  25. end
  26.